const { log } = console
const _ = require('lodash')
// 空白字符 \s space
''.match(/\s+/g)
// 数字 \d digits
''.match(/\d+/g)
// 怎么重用函数?
function match (reg,str) {
  reutrn str.match(reg)
}

const match = _.curry(function (reg, str) {
  return str.match(reg)
})


const match = _.curry((reg, str) => str.match(reg))
const hasSpace = match(/\s+/g)
// log(hasSpace('hello world')) // [ ' ' ]
// log(hasSpace('helloworld')) // null
const hasNumber = match(/\d+/g)
// log(hasNumber('123abc')) // [ '123' ]
// log(hasNumber('abc')) // null


// 把数组的filter方法封装成为纯函数
// 数组过滤
const filArr = _.curry(function(func, arr) {
  return arr.filter(func)})
const filArr = _.curry((func, arr) => arr.filter(func))
// log(filArr(hasSpace, ['yuyan jia', 'jack', 'love', ''])) //[ 'yuyan jia' ]

// 继续改造
// 于是可以匹配到数组中具有空白字符的元素
const findSpace = filArr(hasSpace)
log(findSpace(['yuyan jia', 'jack', 'love', ''])) // [ 'yuyan jia' ]

